import { $loading } from "@/secondary/globalProperties/loading";
import { PlainObjType } from "@/typings";

/**
 * 过滤请求参数为 "" | undefined | null 的情况
 */
export const filterData = (data: PlainObjType) => {
  const filterValues = ["", undefined, null];

  const newObj: PlainObjType = {};

  for (const i in data) {
    if (!filterValues.includes(data[i])) {
      Reflect.set(newObj, i, data[i]);
    }
  }

  return newObj;
};

/**
 * 去掉后字符串后缀的'/', 添加前缀的‘/’（如果没有）。
 * eg ‘xxx/zzz/’ => '/xxx/zzz'
 * eg '/xxx/zzz/' => '/xxx/zzz'
 * @param url
 * @returns {string}
 */
export const standardizedUrl = (url: string = ""): string => {
  if (!url || url === "/") {
    return "";
  }
  let temp: string = url.replace(/\/$/, "");

  // 非"http://" 或者 "http://" 或者 '//' 开头 ，在url前面添加 '/'
  if (!/^(http:|https:)?\/\//.test(temp)) {
    temp = temp.replace(/^\//, "");
    temp = "/" + temp;
  }
  return temp;
};

/**
 * 请求时开启的 loading
 * @param type
 * @param config
 */
export const setLoadingStatus = (type: string = "show", config: any = {}): void => {
  if (type === "close") {
    $loading.close();
  } else if (type === "show" && config.openLoading) {
    $loading.show();
  }
};
